package com.rmb.dataanalysis.service;

import java.sql.SQLClientInfoException;
import java.util.List;
import java.util.Map;

/**
 * @version 1.0
 * @Author ZhaoMuYang
 * @Date 2021/1/12 14:51
 */
public interface DataAnalysisService {
    /**
     * 获取所有数据源
     * @return 数据源集合
     */
    List<Map<String,Object>> findAllDataSource();

    /**
     * 查询数据源下数据库
     * @param dataSourceId 数据源ID
     * @return 数据库集合
     */
    List<String> findAllDataBase(Long dataSourceId);

    /**
     * 执行sql查询
     * @param dataSourceId 数据源ID
     * @param dataBaseName 数据库名称
     * @param tableName 表名
     * @param sql sql语句
     * @return 查询结果
     * @throws SQLClientInfoException sql异常
     */
    List<Map<String, Object>> executeSqlQuery(Long dataSourceId,String dataBaseName,String tableName, String sql) throws SQLClientInfoException;


    /**
     * 数据库下所有表
     * @param dataCourseId 数据源ID
     * @param dataBaseName 数据库名称
     * @return 表集合
     */
    List<String> findTablesByDataSource(Long dataCourseId, String dataBaseName);
    
    /**
     * BI分析记录
     * @param executeql 执行语句
     * @param executeResult 执行结果
     * @param dataSourceId 数据源ID
     * @param dataBaseName 数据库名称
     * @param tableName 表名称
     * @return 添加数据
     */
    int addAnalysis(String executeql, String executeResult, Long dataSourceId, String dataBaseName, String tableName);

    /**
     * BI分析报表
     * @param dataSourceId 数据源ID
     * @param dataBaseName 数据库名称
     * @param tableName 数据库名称
     * @return 布尔
     */
    String getDataExcel(Long dataSourceId, String dataBaseName, String tableName);

}
